/**
 * 认证和用户信息管理模块
 */
(function() {
    // 用户登录状态检查
    function checkLoginStatus() {
        const user = getUser();
        if (!user) {
            // 如果没有登录，重定向到登录页面
            // 除非当前已经在登录页面
            if (!window.location.pathname.includes('/login')) {
                window.location.href = '/login';
            }
        } else {
            // 如果已登录，更新UI显示
            updateUIWithUserInfo(user);
            
            // 如果在登录页面但已登录，重定向到首页
            if (window.location.pathname.includes('/login')) {
                window.location.href = '/';
            }
        }
    }
    
    // 获取当前登录用户
    function getUser() {
        const userData = sessionStorage.getItem('user');
        return userData ? JSON.parse(userData) : null;
    }
    
    // 设置当前登录用户
    function setUser(userData) {
        sessionStorage.setItem('user', JSON.stringify(userData));
        
        // 触发用户认证成功事件
        document.dispatchEvent(new CustomEvent('user-authenticated', {
            detail: { userId: userData.id }
        }));
    }
    
    // 用户登出
    function logout() {
        // 调用登出API
        fetch('/api/auth/logout', {
            method: 'POST',
            credentials: 'same-origin'
        })
        .then(() => {
            // 清除会话存储
            sessionStorage.removeItem('user');
            
            // 重定向到登录页面
            window.location.href = '/login';
        })
        .catch(error => {
            console.error('Logout error:', error);
            // 即使API调用失败，也清除本地存储并重定向
            sessionStorage.removeItem('user');
            window.location.href = '/login';
        });
    }
    
    // 使用用户信息更新UI
    function updateUIWithUserInfo(user) {
        // 更新用户名显示
        document.querySelectorAll('.user-name').forEach(element => {
            element.textContent = '欢迎，' + user.fullName;
        });
        
        // 更新用户头像
        document.querySelectorAll('.avatar').forEach(avatar => {
            if (user.avatarUrl) {
                avatar.src = user.avatarUrl;
            }
        });
        
        // 根据用户角色启用/禁用某些功能
        if (user.role === 'DOCTOR') {
            // 显示医生特有的功能
            const patientManagementLink = document.querySelector('.nav-item[data-page="patient-management"]');
            if (patientManagementLink) {
                patientManagementLink.style.display = 'block';
            }
        } else {
            // 隐藏医生特有的功能
            const patientManagementLink = document.querySelector('.nav-item[data-page="patient-management"]');
            if (patientManagementLink) {
                patientManagementLink.style.display = 'none';
            }
        }
    }
    
    // 登录处理
    function login(username, password) {
        fetch('/api/auth/login', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                username: username,
                password: password
            }),
            credentials: 'same-origin'
        })
        .then(response => {
            if (!response.ok) {
                throw new Error('Login failed');
            }
            return response.json();
        })
        .then(data => {
            // 保存用户信息并更新UI
            setUser(data);
            
            // 重定向到首页
            window.location.href = '/';
        })
        .catch(error => {
            console.error('Login error:', error);
            // 显示登录错误消息
            const errorMsg = document.getElementById('login-error');
            if (errorMsg) {
                errorMsg.textContent = '用户名或密码错误，请重试';
                errorMsg.style.display = 'block';
            }
        });
    }
    
    // 暴露公共API
    window.authModule = {
        checkLoginStatus: checkLoginStatus,
        getUser: getUser,
        setUser: setUser,
        logout: logout,
        login: login
    };
    
    // 页面加载时检查登录状态
    document.addEventListener('DOMContentLoaded', function() {
        // 检查登录状态
        checkLoginStatus();
        
        // 绑定登出事件
        const logoutLink = document.querySelector('.nav-item[data-page="logout"]');
        if (logoutLink) {
            logoutLink.addEventListener('click', function(e) {
                e.preventDefault();
                logout();
            });
        }
        
        // 绑定登录表单提交事件
        const loginForm = document.getElementById('login-form');
        if (loginForm) {
            loginForm.addEventListener('submit', function(e) {
                e.preventDefault();
                const username = document.getElementById('username').value;
                const password = document.getElementById('password').value;
                login(username, password);
            });
        }
    });
})(); 